User interface (UI) design is the design of user interfaces for software applications for computers, mobile devices, and other electronic devices. User interface design focuses on maximizing usability and the user experience for a user interacting with the electronic device. A graphical user interface (GUI) is a form of user interface that allows user to interact with an electronic device through graphical icons and other visual indicators instead of text-based user interfaces. The actions in a GUI are typically performed through direct manipulation of graphical elements. Typically, users interact with information by manipulating visual widgets. A widget is an element of interaction of a GUI, such as a button or a scroll bar, that a user manipulates to perform an action associated with a software application. Software developers often use an integrated development environment (IDE) to code UIs for applications. An IDE is a software application that provides facilities to software developers for software development such as a source code editor, build automation tools, a debugger, and various tools to simplify the construction of a GUI.